class MyModel(models.Model):
    name = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
 
    class Meta:
        abstract = True
 
    @staticmethod
    def get_user_permissions(user, obj=None):
        # 根据用户和对象返回相应的权限
        if obj:
            return user.has_perm('change_%s' % obj._meta.model_name)
        else:
            return user.has_perm('add_%s' % obj._meta.model_name)
 
    @staticmethod
    def get_object(pk, queryset=None):
        # 根据 pk 获取对象，可以传入自定义的 queryset
        if queryset:
            return queryset.get(pk=pk)
        else:
            return MyModel.objects.get(pk=pk)
 
    @staticmethod
    def filter_queryset(queryset, filters):
        # 根据 filters 过滤 queryset
        for key, value in filters.items():
            if '__' in key:
                field, lookup = key.split('__')
                if lookup == 'exact':
                    queryset = queryset.filter(Q(**{field: value}) | Q(**{field + '__exact': value}))
                elif lookup == 'contains':
                    queryset = queryset.filter(Q(**{field + '__contains': value}))
                elif lookup == 'gt':
                    queryset = queryset.filter(Q(**{field + '__gt': value}))
                elif lookup == 'lt':
                    queryset = queryset.filter(Q(**{field + '__lt': value}))
                elif lookup == 'gte':
                    queryset = queryset.filter(Q(**{field + '__gte': value}))
                elif lookup == 'lte':
                    queryset = queryset.filter(Q(**{field + '__lte': value}))
            else:
                queryset = queryset.filter(Q(**{key: value}))
        return queryset
 
    @staticmethod
    def update(obj, data):
        # 更新对象的数据
        for key, value in data.items():
            setattr(obj, key, value)
        obj.save()
        return obj
 
    @staticmethod
    def create(data):
        # 创建新对象并返回结果，如果数据存在则返回 False，否则返回 True 和新对象的数据。
        try:
            obj = MyModel(**data)
            obj.save()
            return True, obj.id  # 返回 True 和新对象的 ID，表示创建成功。
        except Exception as e:  # 如果数据存在则抛出异常。
            return False, None  #